import java.util.Scanner;
//字符串计数
//链接：https://www.nowcoder.com/questionTerminal/f72adfe389b84da7a4986bde2a886ec3
//来源：牛客网
//
//求字典序在 s1 和 s2 之间的，长度在 len1 到 len2 的字符串的个数，结果 mod 1000007。
//
//数据范围：1 \le len(s1),len(s2) \le 50 \1≤len(s1),len(s2)≤50  ，1 \le len1,len2 \le 50 \1≤len1,len2≤50
//
//注意：本题有多组输入
//
//输入描述:
//每组数据包涵s1（长度小于50），s2（长度小于50），len1（小于50），len2（大于len1，小于50）
/**
 * 例如ab ce 1 2
 * 过程分为以下几个阶段：
 * 第一阶段：i=min=1;b c,sum=2;除开首字母(剩下只有i-1=0个字母)
 * 第二阶段：i=max=2;ac ... az ,ba ... bz ,ca ,cb;sum = 2+26*2=54;
 * 第三阶段：i=max=2;c d e(除开首字母(剩下只有i-1=1个字母)，
             判断大于b小于等于e的字符串个数);sum = 54+3=57;
 * 第四阶段：减去等于ce这个不满足的条件。sum = 57-1 = 56;
 * 		      注意：仅最后一个小于等于e这个条件需要减去，
          例如abc bbc 1 3 ,i=2时，ac ... az,ba,bb这里这个bb不需要排除，因为bb<bbc
 * 			  
 */
public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		while (scan.hasNext()) {
			String s = scan.nextLine();
			String[] array = s.split(" ");
		
			int min = Integer.parseInt(array[2]);
			int max = Integer.parseInt(array[3]);
			char[] ar = array[0].toCharArray();
			char[] br = array[1].toCharArray();
			long sum = 0;
			for (int i = min; i <= max; i++) {
				char a=ar[0];
                char b=br[0];
               sum  += (long)Math.pow(26,i-1)*(b-a);
                long suma = 0;
    			long sumb = 0;
				for (int j = 1; j < ar.length; j++)// 找到比ar剩余字符串小的字符串个数
				{
					suma = suma + (ar[j] - 'a') * (long) Math.pow(26, i- 1 - j);
				}
				for (int j = 1; j < br.length; j++)// 找到比br剩余字符串小的字符串个数
				{
					sumb = sumb + (br[j] - 'a') * (long) Math.pow(26, i - 1 - j);
				}
			
				sum = sum + sumb-suma;
			}
			sum--;
			System.out.println(sum % 1000007);
		}

	}

}
